package num12;

public class Leecode2 {
    public  class ListNode{
        int val;
        ListNode next;
        ListNode(){

        }
        ListNode(int val){
            this.val = val;
        }
        ListNode(int val, ListNode next){
            this.val = val;
            this.next = next;
        }
    }


        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

            ListNode node = null;
            ListNode head = node;
            ListNode tail = null;
            //进位
            int carry = 0;
            while (l1 != null || l2 != null) {
                int n1 = l1 != null ? l1.val : 0;
                int n2 = l2 != null ? l2.val : 0;
                int sum = n1 + n2 + carry;
                //如果是第一次遍历
                if (head == null) {
                    head = tail = new ListNode(sum % 10);
                }
                if (head != null) {
                    tail.next = new ListNode(sum % 10);
                    tail = tail.next;
                }
                carry = sum % 10;
                //下一个l1的节点
                if (l1 != null) {
                    l1 = l1.next;

                }
                //下一个l2的节点
                if (l2 != null) {
                    l2 = l2.next;

                }
                if (carry > 0) {
                    //如果当前页面余数，那么当前余数作为下一个节点的val
                    tail.next = new ListNode(carry);
                }

                return head;

            }
            return null;

        }


}
